/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.execute.service;

import com.icinfo.cloud.provider.punish.approval.vo.WaitPageEachColorNumVo;
import com.icinfo.cloud.provider.punish.execute.dto.*;
import com.icinfo.cloud.provider.punish.execute.model.ExecuteMainInfo;
import com.icinfo.cloud.provider.punish.execute.vo.*;
import com.icinfo.cloud.provider.punish.ucase.punishexecute.dto.CasePunishActionDto;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 描述: 裁执分离主表 execute_main_info 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年08月24日
 */
public interface IExecuteMainInfoService extends BaseService {
    /**
     * 描述: 裁执分离保存，提供给法院调用，推送裁执分离数据
     *
     * @param saveDto
     * @return com.icinfo.framework.common.web.Result<java.lang.String>
     * @author zhanghongqiang
     * @Date 2022/8/24
     */
    Result<String> saveExecuteMainInfo(ExecuteMainInfoInsertDto saveDto);

    /**
     * 描述: 裁执分离列表,分页查询
     *
     * @param request
     * @return com.icinfo.framework.common.web.Result
     * @author zhanghongqiang
     * @Date 2022/8/25
     */
    List<ExecuteMainInfoVo> getExecuteMainList(ExecuteMainInfoRequest request);

    /**
     * 裁执分离详情信息
     * @param: executeDetailDto
     * @return: com.icinfo.cloud.provider.punish.execute.vo.ExecuteDetailVo
     * @Author: wuzhihui
     * @Date: 2022/08/29
     */
    ExecuteDetailVo getExecuteDetail(ExecuteDetailDto executeDetailDto);

    /**
     * 描述: 裁执分离列表,时效条件查询（红黄蓝）
     *
     * @param request
     * @return com.icinfo.framework.common.web.Result
     * @author zhanghongqiang
     * @Date 2022/8/31
     */
    WaitPageEachColorNumVo getExecutePrescription(ExecuteMainInfoRequest request);
    /**
     *
     * @param: executeId
     * @return: ExecuteMainInfo
     * @Author: wuzhihui
     * @Date: 2022/08/31
     */
    ExecuteMainInfo getByExecuteId(String executeId);
    /**
     * 查询裁执分离阶段文书
     * @param: queryDto
     * @return: List<ExecuteStageDocumentInfoVo>
     * @Author: wuzhihui
     * @Date: 2022/09/01
     */
    List<ExecuteStageDocumentInfoVo> getExecuteStageDocumentInfo(ExecuteStageDocumentQueryDto queryDto);

    /**
     * 裁执分离列表,状态数量
     *
     * @param request
     * @return com.icinfo.framework.common.web.Result
     * @author zhanghongqiang
     * @Date 2022/8/31
     */
    ExecuteStatesNumVo getExecuteStatesNum(ExecuteMainInfoRequest request);
    /**
     * 查询裁执分离信息
     * @param: [executeDetailDto]
     * @return: com.icinfo.cloud.provider.punish.execute.vo.ExecuteMainInfoVo
     * @Author: wuzhihui
     * @Date: 2022/09/02
     */
    ExecuteDetailVo getExecuteMainInfo(ExecuteDetailDto executeDetailDto);

    /**
     * 描述: 审批详情页裁执分离基本信息
     *
     * @param executeDetailDto
     * @return com.icinfo.framework.common.web.Result
     * @author zhanghongqiang
     * @Date 2022/9/6
     */
    ExecuteApprovalVo getExecuteApprovalDetail(ExecuteDetailDto executeDetailDto);
    /**
     * 获取阶段信息
     * @param: [executeId]
     * @return: java.util.List<com.icinfo.cloud.provider.punish.execute.vo.ExecuteDetailStageInfoVo>
     * @Author: wuzhihui
     * @Date: 2022/09/05
     */
    List<ExecuteDetailStageInfoVo> getExecuteDetailStageInfo(String executeId);
    /**
     *
     * @param: [saveDto]
     * @return: boolean
     * @Author: wuzhihui
     * @Date: 2022/09/06
     */
    ExecuteCloseVoDto closeExecute(ExecuteCloseSaveDto saveDto);
    /**
     * 获取结案信息回显
     * @param: [requestDto]
     * @return: com.icinfo.cloud.provider.punish.execute.vo.ExecuteCloseInfoVo
     * @Author: wuzhihui
     * @Date: 2022/09/09
     */
    ExecuteCloseInfoVo getCloseExecuteInfo(ExecuteCloseRequestDto requestDto);

    /**
     * 【V1.0.0】描述：保存执行完毕信息
     *
     * @param  executePunishActionDto
     * @return
     * @author 程亚运
     * @date 2022-09-16 16:02
     */
    Map<String,Object> savePunishExecuteInfo(ExecutePunishActionDto executePunishActionDto);
    /**
     * 案件完结执行回调 法院
     * @param: [requestDto]
     * @return: java.lang.Boolean
     * @Author: wuzhihui
     * @Date: 2022/09/20
     */
    Boolean closingCallback(ExecuteDataRequestDto requestDto);

}